/**
 * 关机功能模块
 * 
 * 这个模块包含了网络测速的核心逻辑。它通过IPC与主进程通信，
 * 并使用Electron的API来获取网络信息。测速结果通过IPC传递给渲染进程，
 * 并在UI上显示。
 */

const { ipcRenderer } = require('electron');
const { handleError, ErrorTypes, tryCatch } = require('../../common/error-handler');
const { showToast } = require('../../common/show-toast');
// 初始化关机设置的时间控制
function initialize() {
    // 获取关机设置的所有时间输入控件
    const shutdownTimeInputs = document.querySelectorAll('#shutdown .time-input-container');

    shutdownTimeInputs.forEach(container => {
        const input = container.querySelector('input');
        const decrementBtn = container.querySelector('.decrement');
        const incrementBtn = container.querySelector('.increment');

        // 减少按钮点击事件
        decrementBtn.addEventListener('click', () => {
            const currentValue = parseInt(input.value || '0', 10);
            const min = parseInt(input.min, 10);
            if (currentValue > min) {
                input.value = currentValue - 1;
                input.dispatchEvent(new Event('change'));
            }
        });

        // 增加按钮点击事件
        incrementBtn.addEventListener('click', () => {
            const currentValue = parseInt(input.value || '0', 10);
            const max = parseInt(input.max, 10);
            if (currentValue < max) {
                input.value = currentValue + 1;
                input.dispatchEvent(new Event('change'));
            }
        });

        // 输入限制
        input.addEventListener('input', () => {
            let value = parseInt(input.value, 10);
            const min = parseInt(input.min, 10);
            const max = parseInt(input.max, 10);

            if (isNaN(value)) {
                // 保持输入框为空，允许用户继续输入
                return;
            } else {
                if (value < min) value = min;
                if (value > max) value = max;
            }

            if (input.value !== value.toString()) {
                input.value = value;
            }
        });
    });

    // 初始化快速关机选项
    const quickShutdownOptions = document.querySelectorAll('.quick-shutdown-option');

    // 立即关机
    quickShutdownOptions[0].addEventListener('click', () => {
        if (confirm('确定要立即关闭计算机吗？')) {
            showToast('正在执行立即关机...');
            ipcRenderer.send('immediate-shutdown');
        }
    });

    // 重启
    quickShutdownOptions[1].addEventListener('click', () => {
        if (confirm('确定要重启计算机吗？')) {
            showToast('正在执行重启...');
            ipcRenderer.send('restart-computer');
        }
    });

    // 睡眠
    quickShutdownOptions[2].addEventListener('click', () => {
        if (confirm('确定要使计算机进入睡眠状态吗？')) {
            showToast('正在使计算机进入睡眠状态...');
            ipcRenderer.send('sleep-computer');
        }
    });


}


// 定时关机
document.getElementById('btn-schedule-shutdown').onclick = function () {
    const hour = parseInt(document.getElementById('shutdown-hour').value, 10);
    const minute = parseInt(document.getElementById('shutdown-minute').value, 10);
    if (isNaN(hour) || isNaN(minute)) {
        showToast('请输入有效的小时和分钟');
        return;
    }
    // 更新状态显示
    showToast(`正在设置定时关机: ${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}...`);

    ipcRenderer.send('schedule-shutdown', { hour, minute });
};

// 倒计时关机
document.getElementById('btn-countdown-shutdown').onclick = function () {
    const minutes = parseInt(document.getElementById('shutdown-countdown').value, 10);
    if (isNaN(minutes) || minutes < 1) {
        showToast('请输入有效的分钟数');
        return;
    }
    // 更新状态显示
    showToast(`正在设置倒计时关机: ${minutes}分钟...`);

    ipcRenderer.send('countdown-shutdown', minutes);
};

// 清除关机
document.getElementById('btn-cancel-shutdown').onclick = function () {
    showToast('正在取消关机设置...');
    ipcRenderer.send('cancel-shutdown');
};

// 显示结果
ipcRenderer.on('shutdown-result', (event, msg) => {
    showToast(msg);
});

function showShutdownResult(msg) {
    const resultElement = document.getElementById('shutdown-result');
    resultElement.textContent = msg;

    // 根据消息内容设置图标和颜色
    const statusIcon = document.querySelector('.status-icon i');
    if (msg.includes('成功') || msg.includes('已设置')) {
        resultElement.style.color = '#27ae60'; // 绿色
        statusIcon.className = 'fas fa-check-circle';
        statusIcon.style.color = '#27ae60';
    } else if (msg.includes('失败') || msg.includes('错误')) {
        resultElement.style.color = '#e74c3c'; // 红色
        statusIcon.className = 'fas fa-times-circle';
        statusIcon.style.color = '#e74c3c';
    } else if (msg.includes('取消')) {
        resultElement.style.color = '#3498db'; // 蓝色
        statusIcon.className = 'fas fa-info-circle';
        statusIcon.style.color = '#3498db';
    } else {
        resultElement.style.color = 'var(--primary-300)'; // 默认颜色
        statusIcon.className = 'fas fa-info-circle';
        statusIcon.style.color = 'var(--primary-200)';
    }
}
// 导出模块
module.exports = {
    initialize
};